Bogactwo gwiazd i ich ścieżek ewolucyjnych jest spore. Aby zorientować się w temacie, użyjemy wbudowanej w Mathematicę bazy danych. Jest ich nieco ponad 200 tyś. Dla porównania baza danych Gaia DR3 ( https://www.cosmos.esa.int/web/gaia/dr3# ) zawiera ich ponad miliard.

stars=StarData[][[1;;All;;7]];(* Co 7 gwiazda, dla przyspieszenia pobierania *)

Length[stars]

StarData["Properties"]

StarData[stars,{(EntityProperty["stellar evolution diagram", EntityProperty["Star","StellarEvolutionDiagram"], "EntityProperty[\"Star\", \"StellarEvolutionDiagram\"]"]),"EffectiveTemperature","Luminosity","Mass","StarType"}];

ewolucja=StarData[stars,(EntityProperty["stellar evolution diagram", EntityProperty["Star","StellarEvolutionDiagram"], "EntityProperty[\"Star\", \"StellarEvolutionDiagram\"]"])]//DeleteDuplicates//Sort;

W bazie wizualnie przedstawiono typowe schematy ewolucji gwiazd pojedynczych.

Manipulate[ewolucja[[ii]],{ii,1,Length[ewolucja],1}]

StarData[stars[[1]],(EntityProperty["stellar evolution diagram", EntityProperty["Star","StellarEvolutionDiagram"], "EntityProperty[\"Star\", \"StellarEvolutionDiagram\"]"])]//VertexList

ListLogLogPlot[Tooltip[{##2},#1]&@@@StarData[(EntityClass["100 nearest stars", EntityClass["Star","StarNearest100"], "EntityClass[\"Star\", \"StarNearest100\"]", "Star"]),{"Name","Mass","Luminosity"}]]

Uświęconym przez czas sposobem analizy zarówno dużych zbiorów gwiazd, jak i ścieżek ewolucyjnych, jest Diagram Hertzpunga-Russela, w skrócie diagram HR. Pokazuje on na osi pionowej jasność absolutną gwiazdy, czyli jej moc promieniowania w skali logarytmicznej. Na osi poziomej odkładamy temperaturę, ściśle skorelowaną z typem widmowym gwiazdy. Z powodów historycznych, oś pozioma zwykle jest skierowana w lewo, czyli odwrotnie niż standardowo.

sd=StarData[stars,{"EffectiveTemperature","Luminosity"}];

sdClean=Select[sd,FreeQ[#,_Missing]&]//Transpose;

Lsun=StarData[StarData["Sun"],"Luminosity"]

hrDAT=Transpose[QuantityMagnitude/@{sdClean[[1]],sdClean[[2]]/Lsun}];

hrDAT[[1]]

ListLogLogPlot[hrDAT,AxesLabel->{"(Subscript[T, eff]) [K]", "L [ (Subscript[L, ⊙])]"},AxesStyle->Thick, PlotStyle->{Black,Medium},BaseStyle->FontSize->14, ImageSize->450]

types=DeleteMissing[StarData[stars,"StarType"]//DeleteDuplicates]

starsByType=Table[Select[StarData[stars,{"EffectiveTemperature","Luminosity","StarType"}],#[[3]]==type&& FreeQ[#,_Missing]&],{type,types}];

{types,Length/@starsByType}//Transpose//TableForm

(*Manipulate[ListLogLogPlot[starsByType[[k]][[1;;,{1,2}]]//QuantityMagnitude],{k,1,Length[types],1}]*)

L=Lsun//QuantityMagnitude

Manipulate[Module[{
data=QuantityMagnitude@Flatten[starsByType[[sel]],1][[All,{1,2}]]},
data=Map[QuantityMagnitude@#[[All,{1,2}]]&,starsByType[[sel]]];
ListLogLogPlot[data,
PlotLegends->types[[sel]],
ScalingFunctions->{"Reverse","Log"},(*hot stars on the left*)
Frame->True,
FrameLabel->{"Teff [K]","L [Watts]"},
ImageSize->600,
PlotRange->{{2000,100000},{10^-4 L, 10^7 L}}
]
],
{{sel,Range[Length[types]]},(*variable,initial value “all”*)
Thread[Range[Length[types]]->types],(*value-label pairs for CheckboxBar*)
ControlType->CheckboxBar,
ControlPlacement->Left,
Appearance->"Vertical"}
]

Kluczowa dla zrozumienia ewolucji gwiazd, jest zależność ich jasności od masy. Uprzedzając, jasność gwiazdy silnie rośnie z jej masą (tzw. masą ZAMS, Zero Age Main Sequence, czyli masą w momencie osiągnięcia ciągu głównego) , z grubsza jak (M^3). Wykładnik może być nieco większy dla gwiazd masywnniejszych od Słońca, lub mniejszy dla tych mniejszych od Słońca. Oznacza to, że im masywniejsza gwiazda, tym krócej żyje. Przyjmując czas życia Słońca jako 10 mld lat, czas życia innych gwiazd to 10 mld lat * (((Msun/M))^2).

lm=StarData[stars,{"Mass","Luminosity"}];

lm[[1]]

lm[[-1]]

lm[[1]]//QuantityMagnitude

lmClean=Select[lm//QuantityMagnitude,NumericQ[#[[1]]]&&NumericQ[#[[2]]]&];

w1=ListLogLogPlot[lmClean]

Manipulate[Show[w1,LogLogPlot[10^lga M^b,{M,10^29,10^33}]],{{lga,-64},-100,10,1},{{b,3},0.5,5,0.1}]

w11=ListLogLogPlot[Select[lmClean,10^30<#[[1]]<10^31&]]

fit0 =  a M^b /. FindFit[Select[lmClean,10^30<#[[1]]<10^31&], a M^b, {{a,10^-64},{b,3}}, M,Method->"NMinimize"]

fit1=  10^lga M^β /. FindFit[Log10[lmClean], β lgM + lga, {{lga,-64},{β,3}}, lgM,Method->"NMinimize"]

fit2 =  10^lga M^3 /. FindFit[Log10[Select[lmClean,10^30<#[[1]]<10^31&]], 3 lgM + lga, {{lga,-64}}, lgM,Method->"NMinimize"]

w2=LogLogPlot[{fit0,fit1,fit2},{M,10^29,10^33}]

Show[w11,w2]

ms=(Select[StarData[stars,{"Mass","Luminosity","StarType"}],#[[3]]=="main sequence"&]//Transpose)[[1;;2]];

mainseqClean=Select[Transpose[(ms)*{1/Quantity[1,"SolarMass"],1/Quantity[1,"SolarLuminosity"]}],NumericQ[Total[#]]&];

w1=ListLogLogPlot[mainseqClean]

w2=LogLogPlot[m^3 ,{m,0.01 ,100},PlotLegends->{"L = (Subscript[L, ⊙])(M/(Subscript[M, ⊙]))^3"},PlotStyle->{Red,Thick},AxesStyle->Thick]

Show[{w2,w1},AxesLabel->{"M [(Subscript[M, ⊙])]","L [(Subscript[L, ⊙])]"},BaseStyle->FontSize->18,ImageSize->450]